﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Data.SqlClient;
using System.Data;

namespace Xiaozilang_Ordering_System
{
    class DBHelper
    {
        //数据库连接字符串
        public static string sql = "server=.;database=Xiaozilang_Ordering_System;Integrated Security=true";
        //数据库连接对象
        public static SqlConnection conn = null;
        //初始化数据库连接
        public static void InitConnection()
        {
            //如果对象不存在，创建连接对象
            if (conn==null)
            {
                conn = new SqlConnection(sql);
            }
            //如果连接对象关闭，重新连接
            if (conn.State==ConnectionState.Closed)
            {
                conn.Open();
            }
            //如果中断，着重启连接
            if (conn.State == ConnectionState.Broken)
            {
                conn.Close();
                conn.Open();
            }
        }
        /*
         * 断开式查询方法
         */
        public static DataTable SelectByAdapter(string Sql)
        {
            //1.创建数据库连接对象Connection
            InitConnection();
            //2.创建数据适配对象DataAdapter
            SqlDataAdapter da = new SqlDataAdapter(Sql, conn);
            //3.创建数据集DataSet或DataTable对象，用于数据缓存
            DataTable dt = new DataTable();
            //4.调用dataAdapter对象的Fill()方法填充DataTable对象
            da.Fill(dt);
            //关闭连接释放资源
            //conn.Close();
            //conn.Dispose();
            //5.绑定数据源到LisView或DataGridView等数据控件上
            return dt;
        }
        /*
         * 增删改操作
         * 参数：sql
         * 返回值：bool
         */
        public static bool GetNonQuery(string Sql)
        {
            InitConnection();
            SqlCommand cmd = new SqlCommand(Sql, conn);
            int i = cmd.ExecuteNonQuery();
            conn.Close();
            return i > 0;
        }
        /*
         * 查询操作
         * 参数：sql
         * 返回值：SqlDataReader
         */
        public static SqlDataReader Select(string Sql)
        {
            InitConnection();
            SqlCommand cmd = new SqlCommand(Sql, conn);
            //4.ExecuteReader执行
            return cmd.ExecuteReader(System.Data.CommandBehavior.CloseConnection);
        }
        /*
         * 集合函数
         * 参数：sql
         * 返回值：SqlDataReader
         */
        public static object ExecuteScalar(string Sql)
        {
            InitConnection();
            SqlCommand cmd = new SqlCommand(Sql, conn);
            object result = cmd.ExecuteScalar();
            conn.Close();
            return result;
        }
        /*DataAdapter方法
         * 参数：sql
         * 返回值DataTable
         */
        /*public static DataTable SelectByAdapter(string sql)
        {

            InitConnection();
            SqlDataAdapter da = new SqlDataAdapter(sql, conn);
            DataTable dt = new DataTable();
            da.Fill(dt);
            return dt;
        }*/
    }
}
